Ruby TypeErrors involving `expected Data`
        Posted  
        
            by Kenny Peng
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Kenny Peng
        
        
        
        Published on 2010-05-11T19:39:50Z
        Indexed on 
            2010/05/11
            19:44 UTC
        
        
        Read the original article
        Hit count: 320
        
I've ran into situations where I have gotten these expected Data errors before, but they have always pointed to ActiveRecord not playing well with other libraries in the past.  This piece of code:
def load(kv_block, debug=false)
    # Converts a string block to a Hash using split
    kv_map = StringUtils.kv_array_to_hash(kv_block)
    # Loop through each key, value
    kv_map.each do |mem,val|
        # Format the member from camel case to underscore
        member = mem.camel_to_underscore()
        # If the object includes a method to set the key (i.e. the key
        # is a member of self), invoke the method, setting the value of
        # the member)
        if self.methods.include?(member.to_set_method_name()) then # Exception thrown here
            self.send(member.to_set_method_name(), val)
        # Else, check for the same case, this time for an instance variable
        elsif self.instance_variable_defined?(member.to_instance_var_name())
            self.instance_variable_set(member.to_instance_var_name(), val)
        # Else, complain that the object doesn't understand the key with
        # respect to its class definition.
        else
            raise ArgumentError, "I don't know what to do with #{member}.  #{self.class} does not have a member or function called #{member}"
        end
    end
end
produces the error wrong argument type #<Class:0x11a02088> (expected Data) (TypeError) in the each loop on the first if test.  I've inspected a post-mortem debugging instance using rdebug, and running that line manually, it works without a hitch.
Has anyone seen this error before and what's been your solution to it?  I used to think it was ActiveRecord and other gems stomping on each other's definitions, but I removed any references to ActiveRecord and this still occurs.
© Stack Overflow or respective owner